package br.com.harley.torneio.exception;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import br.gov.frameworkdemoiselle.exception.ApplicationException;
import br.gov.frameworkdemoiselle.message.Message;

/**
 * Exceção de negócio.
 */
@ApplicationException
public class NegocioException extends Exception {

	/**
	 * Serial ID.
	 */
	private static final long serialVersionUID = 1226471658878701070L;
	/**
	 * Lista de mensagens.
	 */
	private List<Message> mensagens = new ArrayList<Message>();

	/**
	 * Construtor.
	 * 
	 * @param msgs
	 *            Lista de Mensagens.
	 * @param e
	 *            Exceção gerada na aplicação.
	 */
	public NegocioException(String e, Collection<Message> msgs) {
		super(e);
		addMensagens(msgs);
	}

	/**
	 * Adiciona mensagens na lista de mensagens.
	 * 
	 * @param msgs
	 *            lista de mensagens.
	 */
	private void addMensagens(Collection<Message> msgs) {
		this.mensagens.addAll(msgs);
	}

	/**
	 * Adiciona uma mensagem a lista de mensagens.
	 * 
	 * @param msg
	 *            Mensagem.
	 */
	public void addMensagem(Message msg) {
		this.mensagens.add(msg);
	}

	/**
	 * Construtor.
	 * 
	 * @param msg
	 *            Mensagem de Erro de Negócio.
	 */
	public NegocioException(String msg) {
		super(msg);
	}

	public void setMensagens(List<Message> mensagens) {
		this.mensagens = mensagens;
	}

	public List<Message> getMensagens() {
		return mensagens;
	}
}
